home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
c_math.arc
/
FREXP.C
< prev
next >
Wrap
Text File
|
1983-07-02
|
508b
|
38 lines
/* @(#)frexp.c 4.1 (Berkeley) 12/21/80 */
/*
the call
x = frexp(arg,&exp);
must return a double fp quantity x which is <1.0
and the corresponding binary exponent "exp".
such that
arg = x*2^exp
*/
double
frexp(x,i)
double x;
int *i;
{
int neg;
int j;
j = 0;
neg = 0;
if(x<0){
x = -x;
neg = 1;
}
if(x>1.0)
while(x>1){
j = j+1;
x = x/2;
}
else if(x<0.5)
while(x<0.5){
j = j-1;
x = 2*x;
}
*i = j;
if(neg) x = -x;
return(x);
}